home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / Amiga_Mail_Vol2 / Archives / Plain / ma91 / boopsi / ClassDoc.txt < prev    next >
Encoding:
Text File  |  1991-04-15  |  28.9 KB  |  1,384 lines

  1. (c)  Copyright 1991 Commodore-Amiga, Inc.   All rights reserved.
  2. The information contained herein is subject to change without notice,
  3. and is provided "as is" without warranty of any kind, either expressed
  4. or implied.  The entire risk as to the use of this information is
  5. assumed by the user.
  6.  
  7.  
  8.  
  9.  
  10. Appendix: Boopsi Class Reference
  11.  
  12. This appendix documents all the standard classes, their methods, and 
  13. their attributes.  The parameters for each moethod can be found in the 
  14. appropriate include file.  Each attribute is followed by a code that 
  15. lists the methods that apply to that attribute.  The codes are as 
  16. follows:
  17.  
  18.  
  19.  
  20. I       OM_NEW
  21. S       OM_SET
  22. G       OM_GET
  23. N       OM_NOTIFY
  24. U       OM_UPDATE
  25.  
  26.  
  27.  
  28.  
  29.  
  30. Class:                  rootclass
  31. Superclass:             None
  32. Description:            Base class for all other classes
  33. Include File:           <intuition/classusr.h>
  34.  
  35.  
  36.  
  37. New Methods:
  38.  
  39.  
  40.  
  41. OM_NEW - Create a new object.  This method is passed a pointer to the 
  42. "true class" of the object in place of the yet to be created object.  
  43. The Root class will allocate enough memory for all the instance data of 
  44. the true class.
  45.  
  46.  
  47.  
  48. OM_DISPOSE - Delete an object.  This method will free the same amount of 
  49. memory as allocated by OM_NEW.
  50.  
  51.  
  52.  
  53. OM_ADDTAIL - Add an object to an Exec list, based on a MinNode in the 
  54. private rootclass object header.  You can provide any Exec list you 
  55. want, and iterate the objects on the list using the Intuition function 
  56. NextObject().
  57.  
  58.  
  59.  
  60. OM_REMOVE  - Remove an object from an Exec list.
  61.  
  62.  
  63.  
  64. The following methods are defined for all objects, but are no-ops in the 
  65. rootclass.  Implementation for specific subclasses is done to support 
  66. these conventions.
  67.  
  68.  
  69.  
  70. OM_ADDMEMBER - Add some object (passed to the method) to the objects 
  71. list, which is defined by the class.  Examples include the broadcast 
  72. list of modelclass objects, and the component gadgets of a groupgclass 
  73. object.  This is typically implemented by sending the OM_ADDTAIL message 
  74. to the member object.
  75.  
  76.  
  77.  
  78. OM_REMMEMBER - Remove a member object previously added by OM_ADDMEMBER.  
  79. You typically send the OM_REMOVE message to the member object.
  80.  
  81.  
  82.  
  83. OM_SET - Set attributes from passed attribute list.  The Root class  
  84. defines no attributes.
  85.  
  86.  
  87.  
  88. OM_GET - Retrieve an attribute.
  89.  
  90.  
  91.  
  92. OM_UPDATE - "Be updated" of external changes.  A no-op for rootclass.
  93.  
  94.  
  95.  
  96. OM_NOTIFY - Notify other of changes provided in the message.  A no-op 
  97. for the root class.
  98.  
  99.  
  100.  
  101.  
  102.  
  103. Changed Methods:
  104.  
  105.  
  106.  
  107. Not applicable.
  108.  
  109.  
  110.  
  111.  
  112.  
  113. Attributes:
  114.  
  115.  
  116.  
  117. None.
  118.  
  119. Class:                  imageclass
  120. Superclass:             rootclass
  121. Description:            Base class for Intuition Images
  122. Include File:           <intuition/imageclass.h>
  123.  
  124.  
  125. New Methods:
  126.  
  127.  
  128.  
  129. IM_DRAW - Draw the image in the RastPort passed in the message, at the 
  130. xoffset and in the state provided in the message. 
  131.  
  132.  
  133.  
  134. IM_HITTEST - Return TRUE if the point passed is within the image.  This 
  135. base Image class returns TRUE if the point is within the old Image 
  136. structure box.
  137.  
  138.  
  139.  
  140. IM_ERASE - Erase an image.  This class will call the new graphics 
  141. library function EraseRect() for its Image box.  IM_ERASE does not test 
  142. the box dimensions  (>= 0).
  143.  
  144.  
  145.  
  146. IM_MOVE - Erase and redraw an image.  This is intended for subclasses 
  147. capable of performing animation or smooth dragging (e.g., prop gadget 
  148. knobs).  A no-op for imageclass.  
  149.  
  150.  
  151.  
  152. IM_FRAMEBOX - A no-op for this base class, but implemented by image 
  153. subclasses which are "stretchable".  For example, frameiclass objects 
  154. put an embossed frame around a text label or glyph.  The message passed 
  155. to this method contains a pointer to a box describing the dimensions of 
  156. the contents to frame, and a pointer to a frame box for the result.  
  157. There is also a FrameFlags field which currentlly has only one defined 
  158. flag, FRAMEF_SPECIFY.
  159.  
  160.  
  161.  
  162. The idea behind this frame business is to support multiple gadgets (as 
  163. found in a system requester) which share a single frame image object, 
  164. but render it in different dimensions appropriate for their enclosed 
  165. label.  The operation of this method should be defined by suitable 
  166. subclasses as follows, and return non-zero to indicate that they support 
  167. this method.
  168.  
  169.  
  170.  
  171. If FRAMEF_SPECIFY is not set, you should set up the povided frame box 
  172. with the position and dimensions of the frame you would render to 
  173. enclose the contents box.  This is an inquiry function used, for 
  174. example, by a gadget which wants to know what sized frame dimensions to 
  175. pass to IM_DRAWFRAME (defined below) and how to center the contents.
  176.  
  177.  
  178.  
  179. The caller might then add a little aesthetic margin by increasing the 
  180. dimensions (or might decide to make a column of framed objects all the 
  181. same width as the largest one), and having done so, can call the method 
  182. IM_FRAMEBOX again, this time with FRAMEF_SPECIFY set.  Now, your method 
  183. is expected to respect the dimensions specified in the frame box (even 
  184. if you think they are too small!) and to set up only the position of the 
  185. frame box appropriately for enclosing the provided contents box.  
  186. Currently implemented frame image classes always center the contents, 
  187. but future classes might want to support an attribute for optional left 
  188. or right justification of the contents.
  189.  
  190.  
  191.  
  192. IM_DRAWFRAME - Image subclasses which assign proper meaning to this 
  193. class (i.e. frameiclass) should respect the dimensions that are passed 
  194. in this message by superceding this method.  If imageclass sees this 
  195. message, it will convert it to an IM_DRAW message and send it back to 
  196. the image's true class.  This way, any subclass of imageclass which 
  197. doesn't implement or recognize the IM_DRAWFRAME method will default to 
  198. drawing objects at their "natural" dimensions.
  199.  
  200.  
  201.  
  202. IM_HITFRAME - Perform a hit test for the image respecting the frame 
  203. dimensions passed in the message.  Useful for something like a 
  204. stretchable rounded box.  This class just performs the same as 
  205. IM_HITTEST, ignoring the dimensions passed.
  206.  
  207.  
  208.  
  209. IM_ERASEFRAME - Erase an image respecting the frame dimensions passed in 
  210. the message.  This class calls EraseRect() for the frame dimensions, 
  211. again not checking dimension validity.
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219. Changed Methods:
  220.  
  221.  
  222.  
  223. OM_NEW - Instance data contains an Image structure, and its Depth field 
  224. is initialized to CUSTOMIMAGEDEPTH, which identifies such images to 
  225. Intuition.  The Width and Height fields are set to arbitrary positive 
  226. numbers for safety, but you should always set them to something 
  227. meaningful.
  228.  
  229.  
  230.  
  231. OM_SET - Applies all supported attributes, returns '1'.
  232.  
  233.  
  234.  
  235.  
  236.  
  237. Attributes:
  238.  
  239.  
  240.  
  241. IA_Left                         (ISG)
  242.  
  243. IA_Top                          (ISG)
  244.  
  245. IA_Width                        (ISG)
  246.  
  247. IA_Height                       (ISG) 
  248.  
  249. These attributes are stored (by imageclass) as values in the familiar 
  250. Image structure.
  251.  
  252.  
  253.  
  254. IA_FGPen                        (ISG)
  255.  
  256. IA_BGPen                        (ISG) 
  257.  
  258. These attributes are maintained in the PlanePick and PlaneOnOff fields, 
  259. which concept they generalize.
  260.  
  261.  
  262.  
  263. IA_Data                         (ISG) 
  264.  
  265. A pointer to general image data.  This value is stored in the ImageData 
  266. field of the old Image structure.
  267.  
  268.  
  269.  
  270. IA_LineWidth                    () 
  271.  
  272. A no-op for imageclass.
  273.  
  274.  
  275.  
  276. IA_Pens                         ()
  277.  
  278. Defined but not supported by imageclass. Pointer to UWORD pens[], 
  279. terminated by ~0.  This can be used to the exclusion of DrawInfo 
  280. attributes or parameters, or as an override.
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287. Class:                  frameiclass
  288. Superclass:             imageclass
  289. Description:            A raised, sunken, or chisled image class
  290.                         supporting frame dimensions and Intuition new
  291.                         look parameters.  
  292. Include File:           <intuition/imageclass.h>
  293.  
  294.  
  295.  
  296. New Methods:
  297.  
  298.  
  299.  
  300. None, but implements some of the no-ops in imageclass.
  301.  
  302.  
  303.  
  304.  
  305.  
  306. Changed Methods:
  307.  
  308.  
  309.  
  310. OM_GET - A no-op for this class.
  311.  
  312.  
  313.  
  314. IM_DRAW - Draws the embossed frame in its natural (Image) dimensions.  
  315. Frame thickness support of IA_LineWidth is currently not implemented.  
  316. Frame type is determined by attributes below, colors determined by 
  317. DrawInfo and supports these drawing states: 
  318.  
  319.  
  320.  
  321.         IDS_NORMAL, IDS_INACTIVENORMAL, IDS_DISABLED: 
  322.  
  323. Renders edges in shadowPen, shinePen, and backgroundPen for the 
  324. interior.  NOTE: No ghosting is done for IDS_DISABLED.  
  325.  
  326.  
  327.  
  328.         IDS_SELECTED, IDS_INACTIVESELECTED: 
  329.  
  330. Renders edges in shadowPen, shinePen, and hifillPen, for the interior.
  331.  
  332.  
  333.  
  334. IM_DRAWFRAME - Same as IM_DRAW, but draws frame to specified exterior 
  335. dimensions.
  336.  
  337.  
  338.  
  339. IM_FRAMEBOX - Centers contents, adds dimension for frame thickness, plus 
  340. an interior margin of the same thickness.
  341.  
  342.  
  343.  
  344.  
  345.  
  346. Attributes:
  347.  
  348.  
  349.  
  350. IA_Recessed                     (IS) 
  351.  
  352. Specifies that the frame should be recessed into the drawing surface 
  353. (shadowPen used on upper and left edges).  Default is FALSE, a raised 
  354. frame.
  355.  
  356.  
  357.  
  358. IA_DoubleEmboss                 (IS)
  359.  
  360. Two nested embossed frames for "chisled" boxes or "ridges".  Not 
  361. currently supported.
  362.  
  363.  
  364.  
  365. IA_EdgesOnly                    (IS) 
  366.  
  367. Does not fill frame, just draws the edges.
  368.  
  369.  
  370.  
  371. IA_LineWidth                    ()
  372.  
  373. Not currently supported.
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383. Class:                  sysiclass
  384. Superclass:             imageclass
  385. Description:            Class for system and standard application images.
  386. Include File:           <intuition/imageclass.h>
  387.  
  388.  
  389. New Methods:
  390.  
  391.  
  392.  
  393. None.
  394.  
  395.  
  396.  
  397.  
  398.  
  399. Changed Methods:
  400.  
  401.  
  402.  
  403. OM_NEW - Executes a drawing commands list to create a fast-rendering 
  404. image object.  The glyph of the object is defined by the attribute 
  405. SYSIA_Which.  The SYSIA_DrawInfo parameter is required at 
  406. initialization, as is IA_Height.  Image size defaults are established by 
  407. SYSIA_Size, but some images  (title bar gadget images) require 
  408. IA_Height.  Images are scaled to their dimensions.
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416. Attributes:
  417.  
  418.  
  419.  
  420. SYSIA_DrawInfo                  (IS)
  421.  
  422. This attribute must be passed to OM_NEW and OM_SET to allow the image to 
  423. be generated into a bitmap cache.
  424.  
  425.  
  426.  
  427. SYSIA_Which                     (I) 
  428.  
  429. Identifies which of the system image glyphs the caller wants.  It can be 
  430. one of the following:
  431.  
  432.  
  433.  
  434. DEPTHIMAGE              Window depth arrangement image.
  435. ZOOMIMAGE               Window Zoom image.
  436. SIZEIMAGE               Window Sizing image.
  437. CLOSEIMAGE              Window close image.
  438. SDEPTHIMAGE             Screen depth arrangement image.
  439. LEFTIMAGE               Left arrow image.
  440. UPIMAGE                 Up arrow image.
  441. RIGHTIMAGE              Right arrow image.
  442. DOWNIMAGE               Down arrow image.
  443. CHECKIMAGE              Checkmark image.
  444. MXIMAGE                 Radio button image.
  445.  
  446.  
  447. SYSIA_Size                      (I)
  448.  
  449. Identifies which default dimensions to use for the object.  This 
  450. generalizes Intuition's older concept of two different system image 
  451. dimensions.  The system currently uses SYSISIZE_MEDRES as the default, 
  452. SYSISIZE_HIRES for screens with title bars greater than 22 pixels, and 
  453. SYSISIZE_LORES for screens with fat pixels.
  454.  
  455.  
  456.  
  457.  
  458.  
  459. Class:                  fillrectclass
  460. Superclass:             imageclass
  461. Description:            Rectangle with frame and pattern support
  462. Include File:           <intuition/imageclass.h>
  463.  
  464.  
  465. New Methods:
  466.  
  467.  
  468.  
  469. None.
  470.  
  471.  
  472.  
  473.  
  474.  
  475. Changed Methods:
  476.  
  477.  
  478.  
  479. IM_DRAW - Draws the pattern in its natural (Image) dimensions. 
  480.  
  481.  
  482.  
  483. IM_DRAWFRAME - Same as IM_DRAW, but draws pattern to specified exterior 
  484. dimensions.
  485.  
  486.  
  487.  
  488.  
  489.  
  490. Attributes:
  491.  
  492.  
  493.  
  494. IA_APattern                     (IS)
  495.  
  496. Points to the pattern to fill in the Image structure's ImageData field.
  497.  
  498.  
  499.  
  500. IA_APatSize                     (IS)
  501.  
  502. The pattern's dimension.
  503.  
  504.  
  505.  
  506. IA_Mode                         (IS)
  507.  
  508. Drawing mode for the pattern.
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518. Class:                  itexticlass
  519. Superclass:             imageclass
  520. Description:            IntuiText equivalent with attribute override.
  521. Include File:           <intuition/imageclass.h>
  522.  
  523.  
  524. New Methods:
  525.  
  526.  
  527.  
  528. None.
  529.  
  530.  
  531.  
  532.  
  533.  
  534. Changed Methods:
  535.  
  536.  
  537.  
  538. IM_DRAW - Draws IntuiText specified as IA_Data overriding the attributes 
  539. specified in the IntuiText structure.  The Mode used is JAM1, the color 
  540. as specified as IA_FGPen.  The position of the itexticlass object is 
  541. added to the position of the IntuiText.
  542.  
  543.  
  544.  
  545. This class was defined to make new-looking AutoRequesters without 
  546. changing the IntuiText structures passed to it.
  547.  
  548.  
  549.  
  550.  
  551.  
  552. Attributes:
  553.  
  554.  
  555.  
  556. IA_Data                         (ISG)
  557.  
  558. Processed blindly by superclass, must be a pointer to a normal IntuiText 
  559. structure.
  560.  
  561.  
  562.  
  563. IA_FGPen                        (ISG)
  564.  
  565. Processed by superclass, used as APen when drawing text.
  566.  
  567.  
  568.  
  569. IA_Left, IA_Top                 (ISG)
  570.  
  571. Added to IntuiText offsets.
  572.  
  573.  
  574.  
  575.  
  576.  
  577. Class:                  icclass
  578. Superclass:             rootclass
  579. Description:            Base class of simple forwarding interconnection.
  580. Include File:           <intuition/icclass.h>
  581.  
  582.  
  583. New Methods:
  584.  
  585.  
  586.  
  587. ICM_SETLOOP
  588.  
  589. ICM_CLEARLOOP
  590.  
  591. ICM_CHECKLOOP - All of these methods are used internally by subclasses 
  592. to manage a loop inhibition for broadcasted messages.  They increment, 
  593. decrement, and return the value of that counter.
  594.  
  595.  
  596.  
  597.  
  598.  
  599. Changed Methods:
  600.  
  601.  
  602.  
  603. OM_SET - Sets attributes and returns 0.  Note that this is not the same 
  604. behavior as OM_NOTIFY.
  605.  
  606.  
  607.  
  608. OM_NOTIFY - Issues an OM_UPDATE message to the object indicated by 
  609. attribute ICA_Target, first converting the attribute tags according to 
  610. the ICA_Map attribute.  The internal loop count is incremented until the 
  611. OM_UPDATE method it invokes on ICA_Target returns.  Also, it will do 
  612. nothing at all if that loop count was non-zero to begin with, preventing 
  613. itself from participating in an infinite loop.
  614.  
  615.  
  616.  
  617. OM_UPDATE - Receive update notices from others.  This base IC class just 
  618. passes the message along, treating it exactly like an OM_NOTIFY message.  
  619. Subclasses will probably redefine this method to perform a calculation, 
  620. the result of which they might forward to others by issuing themselves 
  621. an OM_NOTIFY message.  Unfortunately, this class converts the OM_SET and 
  622. OM_NOTIFY messages to an OM_NOTIFY by changing their MethodID field, and 
  623. does not restore it to what it originally was.
  624.  
  625.  
  626.  
  627.  
  628.  
  629. Attributes:
  630.  
  631.  
  632.  
  633. ICA_Target                      (IS)
  634.  
  635. Target object for OM_UPDATE messages.  If this attribute is given the 
  636. value ICTARGET_IDCMP, then the notification will consist of sending an 
  637. IDCMPUPDATE IntuiMessage to a window.  The window is determined by the 
  638. GadgetInfo structure passed around when the object is connected to 
  639. gadgets.
  640.  
  641.  
  642.  
  643. ICA_Map                         (IS) 
  644.  
  645. Attribute mapping list.
  646.  
  647.  
  648.  
  649. ICSPECIAL_CODE                  (*)
  650.  
  651. This is a magic dummy attribute: if it occurs as a target in the ICA_Map 
  652. mapping list, and ICA_Target is ICTARGET_IDCMP, then the new value of 
  653. the corresponding attribute will be copied into the IntuiMessage.Code 
  654. field of the IDCMPUPDATE message (just the lower sixteen bits of the 
  655. attribute value will fit).  This sometimes makes it particularly simple 
  656. to process IDCMPUPDATE messages with a single item of interest.
  657.  
  658.  
  659.  
  660.  
  661.  
  662. Class:                  modelclass
  663. Superclass:             icclass
  664. Description:            Provides "broadcast" interconnection.
  665. Include File:           <intuition/icclass.h>
  666.  
  667.  
  668. New Methods:
  669.  
  670.  
  671.  
  672. None.
  673.  
  674.  
  675.  
  676.  
  677.  
  678. Changed Methods:
  679.  
  680.  
  681.  
  682. OM_ADDMEMBER - Adds an object to the the Model's internally maintained 
  683. broadcast list.  Anything on this list will be DISPOSED when the model 
  684. object is disposed.
  685.  
  686.  
  687.  
  688. OM_REMMEMBER - Removes objects added by OM_ADDMEMBER.
  689.  
  690.  
  691.  
  692. OM_DISPOSE - Disposes members of the broadcast list as well as itself.
  693.  
  694.  
  695.  
  696. OM_NOTIFY, OM_UPDATE - these behave like the icclass methods, but first 
  697. an OM_UPDATE message is sent to all members of the object's broadcast 
  698. list, un-mapped.  The members of the broadcast list are typically 
  699. icclass objects, which have gadgets as their targets and appropriate 
  700. mapping lists.  If you are creating a useful subclass, you will probably 
  701. want to intercept OM_UPDATE, but pass OM_NOTIFY to modelclass, your 
  702. superclass.
  703.  
  704.  
  705.  
  706.  
  707.  
  708. Attributes:
  709.  
  710.  
  711.  
  712. ICA_Map, ICA_Target -  Same as for the superclass (icclass).
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720. Class:                  gadgetclass
  721. Superclass:             rootclass
  722. Description:            Base class for Intuition compatible gadget classes
  723. Include File:           <intuition/gadgetclass.h>
  724.  
  725.  
  726. New Methods:
  727.  
  728.  
  729. Intuition uses the following methods to control a gadget.  Only custom 
  730. gadget class implentors will be interested in these.
  731.  
  732. GM_HITTEST
  733. GM_RENDER
  734. GM_GOACTIVE
  735. GM_HANDLEINPUT
  736. GM_GOINACTIVE 
  737.  
  738.  
  739.  
  740. Changed Methods:
  741.  
  742.  
  743. OM_NEW - Initializes transparent Gadget structure.  LeftEdge and TopEdge 
  744. are set to 0, Width and Height are arbitrary constants which you should 
  745. override.  Sets GadgetType to CUSTOMGADGET, and installs a pointer to 
  746. the gadgetclass data structure in the MutualExclude field.  These 
  747. objects are also valid "custom gadgets."
  748.  
  749.  
  750. Links self into a NextGadget linked list if GA_Previous is passed to 
  751. OM_NEW.
  752.  
  753.  
  754.  
  755. OM_UPDATE and OM_SET are used simply to change the attributes.  This 
  756. gadgetclass does not implement any concrete gadgets.  This is left to 
  757. the subclasses.
  758.  
  759.  
  760.  
  761. OM_NOTIFY - This class will issue an OM_UPDATE message to ICA_Target 
  762. through ICA_Map.  Subclasses of gadgetclass are advised to let the 
  763. superclass handle this method.
  764.  
  765.  
  766.  
  767.  
  768.  
  769. Attributes:
  770.  
  771.  
  772.  
  773. GA_Left                         (IS)
  774.  
  775. GA_Top                          (IS)
  776.  
  777. GA_Width                        (IS)
  778.  
  779. GA_Height                       (IS)
  780.  
  781. These correspond to position and dimension fields in the Intuition 
  782. Gadget structure.  Setting these clears the "gadget relative" flags 
  783. (below).
  784.  
  785.  
  786.  
  787. GA_RelRight                     (IS)
  788.  
  789. GA_RelBottom                    (IS)
  790.  
  791. GA_RelWidth                     (IS)
  792.  
  793. GA_RelHeight                    (IS)
  794.  
  795. These are alternative position/dimension attributes.  Setting these 
  796. stores the corresponding data in the Left/Top/Width/Height Gadget 
  797. fields, respectively, and sets the corresponding "relative" flag 
  798. (GRELRIGHT, GRELBOTTOM, and so on).
  799.  
  800.  
  801.  
  802. GA_IntuiText                    (IS)
  803.  
  804. GA_Text                         (IS)
  805.  
  806. GA_LabelImage                   (IS)
  807.  
  808. This copies the ti_Data value blindly into the Gadget.GadgetText field, 
  809. and sets the flags LABELSTRING and LABELIMAGE as appropriate in 
  810. Gadget.Flags.  GA_IntuiText requires that ti_Data be an IntuiText 
  811. pointer, as with old-style gadgets.  GA_Text takes a pointer to a NULL-
  812. terminated string (UBYTE *).  GA_LabelImage takes a pointer to a 
  813. (boopsi) image.
  814.  
  815.  
  816.  
  817. Classes which support the attributes other than GA_IntuiText must 
  818. document themselves appropriately, but this facility allows us to have 
  819. low-overhead text gadgets and gadgets with iconic labels.
  820.  
  821.  
  822.  
  823. GA_Image                        (IS)
  824.  
  825. This may be a boopsi image or a regular image.  Things are designed so 
  826. that the image may be shared between gadgets. The image will not be 
  827. disposed when the gadget object is disposed.
  828.  
  829.  
  830.  
  831. GA_Border                       (IS)
  832.  
  833. GA_SelectRender                 (IS)
  834.  
  835. GA_ID                           (IS)
  836.  
  837. GA_UserData                     (IS)
  838.  
  839. GA_SpecialInfo                  (IS)
  840.  
  841. All of this group of attributes correspond to fields in the Gadget 
  842. structure.
  843.  
  844.  
  845.  
  846. GA_Disabled                     (IS)
  847.  
  848. GA_GZZGadget                    (IS)
  849.  
  850. GA_Selected                     (IS)
  851.  
  852. GA_EndGadget                    (IS)
  853.  
  854. GA_Immediate                    (IS)
  855.  
  856. GA_RelVerify                    (IS)
  857.  
  858. GA_FollowMouse                  (IS)
  859.  
  860. GA_RightBorder                  (IS)
  861.  
  862. GA_LeftBorder                   (IS)
  863.  
  864. GA_TopBorder                    (IS)
  865.  
  866. GA_BottomBorder                 (IS)
  867.  
  868. GA_ToggleSelect                 (IS)
  869.  
  870. GA_SysGadget                    (IS)
  871.  
  872. GA_TabCycle                     (IS)
  873.  
  874. This group corresponds to Boolean attributes (flags) in the Gadget 
  875. structure.  This class will put the correct flag in the correct field.  
  876. You can pass any non-zero value in the ti_Data tag field to cause the 
  877. corresponding flag to be set.  Pass zero to clear.
  878.  
  879.         
  880.  
  881. GA_HighLight                    (IS)
  882.  
  883. Sets the "GADGHIGHBITS" portion of Gadget.Flags to the attribute value 
  884. in ti_Data.
  885.  
  886.  
  887.  
  888. GA_SysGType                     (IS)
  889.  
  890. Sets the system gadget type portion of Gadget.GadgetType to the (masked) 
  891. value in ti_Data.
  892.  
  893.  
  894.  
  895. GA_Previous                     (I)
  896.  
  897. Previous gadget (or (struct Gadget **)) in linked list.  This attribute 
  898. cannot be used to link new gadgets into the gadget list of an open 
  899. window or requester.  You must use AddGList().
  900.  
  901.  
  902.  
  903. ICA_Target                      (IS)
  904.  
  905. ICA_Map                         (IS)
  906.  
  907. These are given the same meaning as in icclass, from which they are 
  908. borrowed.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914. Class:                  propgclass
  915. Superclass:             gadgetclass
  916. Description:            Extended function proportional gadgets.
  917. Include File:           <intuition/gadgetclass.h>
  918.  
  919.  
  920. New Methods:
  921.  
  922.  
  923.  
  924. None.
  925.  
  926.  
  927.  
  928. Changed Methods:
  929.  
  930.  
  931.  
  932. All methods defined by gadgetclass are handled to provide compatible 
  933. proportional gadget processing.
  934.  
  935.  
  936.  
  937. OM_SET, OM_UPDATE - Changes attributes and, if needed and if propgclass 
  938. is the true class, will update the slider visuals by updating the knob 
  939. position and dimensions.
  940.  
  941.  
  942.  
  943. GM_HANDLEINPUT - If the knob position changes sufficiently to change 
  944. PGA_Top, this method will issue an OM_NOTIFY message, with attributes 
  945. PGA_Top and GA_ID.  The OPUF_INTERIM flag will be set for intermediate 
  946. messages issued while the mouse is dragging the slider knob. This method 
  947. Will issue a message with OPUF_INTERIM clear when it is done, which is 
  948. the "final value".
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Attributes:
  955.  
  956.  
  957.  
  958. GA_Image                        (I)
  959.  
  960. GA_Border                       (I)
  961.  
  962. If you don't pass GA_Image to NewObject(), the gadget will create and 
  963. use an AUTOKNOB.  Likewise if you pass (the "illegal" attribute) 
  964. GA_Border: an AUTOKNOB will be used instead.
  965.  
  966.  
  967.  
  968. GA_HighLight                    (I)
  969.  
  970. GADGHBOX highlighting is not allowed, and will be converted to GADGHBOX.
  971.  
  972.  
  973.  
  974. GA_SpecialInfo                  ()
  975.  
  976. This attributed is "forced" to point to the PropInfo allocated for 
  977. objects of this class.
  978.  
  979.  
  980.  
  981. Other gadgetclass attributes are passed along to the superclass.
  982.  
  983.  
  984.  
  985. PGA_Freedom                     (IG)
  986.  
  987. May be either of FREEHORIZ or FREEVERT (not both).  The default is 
  988. FREEVERT.
  989.  
  990.  
  991.  
  992. PGA_Borderless                  (I)
  993.  
  994. Means the same as PropInfo.Flags BORDERLESS.
  995.  
  996.  
  997.  
  998. PGA_HorizPot, PGA_VertPot, PGA_HorizBody, PGA_VertBody
  999.  
  1000. These are defined in the include file but obsolete and will not be 
  1001. supported.  Class propgclass supports gadgets that are vertical or 
  1002. horizontally free, but not both.
  1003.  
  1004.  
  1005.  
  1006. PGA_Top                         (ISGNU)
  1007.  
  1008. PGA_Visible                     (ISU)
  1009.  
  1010. PGA_Total                       (ISU)
  1011.  
  1012. These attributes are very useful replacements to Pot and Body variables.  
  1013. They are based on the use of proportional gadgets to control scrolling 
  1014. text.  When scrolling 100 lines of text in a 25 line visible window, you 
  1015. would set PGA_Total to 100, PGA_Visible to 25, and watch PGA_Top run 
  1016. from 0 to 75 (the top line of the last page).  All internal prop gadget 
  1017. values will be calculated based on these (depending on whether the 
  1018. gadget is FREEHORIZ or FREEVERT). "Container clicks" for page jumps will 
  1019. leave an overlap of one line, unless the value PGA_Visible is 1, in 
  1020. which case the prop gadget acts as an integer numeric slider taking 
  1021. values from 0 to PGA_Total - 1.  Note that PGA_Top has OM_NOTIFY access.  
  1022. All three of these attributes have OM_UPDATE access, so they can be 
  1023. controlled via interconnections.
  1024.  
  1025.  
  1026.  
  1027. PGA_NewLook                     (I)
  1028.  
  1029. Equivalent to PropInfo.Flags PROPNEWLOOK flag.
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035. Class:                  strgclass
  1036. Superclass:             gadgetclass
  1037. Description:            Intuition compatible string gadgets.
  1038. Include File:           <intuition/gadgetclass.h>
  1039.  
  1040.  
  1041. New Methods:
  1042.  
  1043.  
  1044.  
  1045. None.
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051. Changed Methods:
  1052.  
  1053.  
  1054.  
  1055. All methods defined by gadgetclass are handled to provide compatible 
  1056. string gadget processing.
  1057.  
  1058.  
  1059.  
  1060. OM_NEW - Sets up StringInfo and StringExtend structures.  Will allocate 
  1061. a Buffer if needed and will use shared data buffers for UndoBuffer and 
  1062. WorkBuffer if the MaxChars is less than SG_DEFAULTMAXCHARS (128).  
  1063. Default text pens are FG = 1, BG = 0;
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069. Attributes:
  1070.  
  1071.  
  1072.  
  1073. GA_ID                           (ISG)
  1074.  
  1075. Will be included in OM_NOTIFY messages generated.
  1076.  
  1077.  
  1078.  
  1079. STRINGA_MaxChars                (I)
  1080.  
  1081. STRINGA_Buffer                  (I)
  1082.  
  1083. STRINGA_UndoBuffer              (I)
  1084.  
  1085. STRINGA_WorkBuffer              (I)
  1086.  
  1087. Specify various buffers defined for string gadgets and extended string 
  1088. gadgets.  If your value of STRINGA_MaxChars is less than 
  1089. SG_DEFAULTMAXCHARS (120 for now), then this class can provide all these 
  1090. buffers for you.  Note that UndoBuffer and WorkBuffer can be shared by 
  1091. many separate gadgets, providing they are as large as the largest 
  1092. MaxChars they will encounter.
  1093.  
  1094.  
  1095.  
  1096. STRINGA_BufferPos               (ISU)
  1097.  
  1098. STRINGA_DispPos                 (ISU)
  1099.  
  1100. Familiar cursor and scroll position.
  1101.  
  1102.  
  1103.  
  1104. STRINGA_AltKeyMap               (IS)
  1105.  
  1106. Same as StringInfo.AltKeyMap.
  1107.  
  1108.  
  1109.  
  1110. STRINGA_Font                    (IS)
  1111.  
  1112. Font for string gadget text.  Must be an open TextFont.
  1113.  
  1114.  
  1115.  
  1116. STRINGA_Pens                    (IS)
  1117.  
  1118. Pen numbers, packed as two shorts into a longword, for rendering gadget 
  1119. text.
  1120.  
  1121.  
  1122.  
  1123. STRINGA_ActivePens              (IS)
  1124.  
  1125. Optional pen numbers, packed as two shorts into a longword, for 
  1126. rendering gadget text, when the gadget is active.
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132. STRINGA_EditHook                (I)
  1133.  
  1134. Custom string gadget edit hook.
  1135.  
  1136.  
  1137.  
  1138. STRINGA_EditModes               (IS)
  1139.  
  1140. Value taken from flags defined in <intuition/sghooks.h> for initial 
  1141. editing modes.
  1142.  
  1143.  
  1144.  
  1145. STRINGA_ReplaceMode             (IS)
  1146.  
  1147. STRINGA_FixedFieldMode          (IS)
  1148.  
  1149. STRINGA_NoFilterMode            (IS)
  1150.  
  1151. These three are independent Boolean equivalents to the individual flags 
  1152. that you can set for STRINGA_EditModes.
  1153.  
  1154.  
  1155.  
  1156. STRINGA_Justification           (IS)
  1157.  
  1158. Takes the values STRINGCENTER, STRINGRIGHT, and STRINGLEFT (which is 0).
  1159.  
  1160.  
  1161.  
  1162. STRINGA_LongVal                 (ISGNU)
  1163.  
  1164. When you specify this to a string gadget object, it means first that the 
  1165. gadget is now for integer entry only, and the value of the gadget takes 
  1166. the numeric value passed in ti_Data.  Note that this attribute has 
  1167. OM_NOTIFY and OM_UPDATE access.
  1168.  
  1169.  
  1170.  
  1171. STRINGA_TextVal                 (ISGNU)
  1172.  
  1173. When you specify this to a string gadget object, it means that the 
  1174. gadget is for text entry only, and the value of the gadget is copied 
  1175. from the string value passed as a UBYTE pointer in ti_Data.  Note that 
  1176. this attribute has OM_NOTIFY and OM_UPDATE access.
  1177.  
  1178.  
  1179.  
  1180. STRINGA_ExitHelp                (IS)
  1181.  
  1182. Set this if you want the gadget to exit when the ``Help'' key is 
  1183. pressed.  Look for a code of 0x5f, the rawkey code for help.
  1184.  
  1185.  
  1186.  
  1187. Notification messages will be issued whenever the gadget chooses to go 
  1188. inactive (not when it is aborted).  The OPUF_INTERIM flag is always 
  1189. clear.
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196. Class:                  groupgclass
  1197. Superclass:             gadgetclass
  1198. Description:            Composite gadget objects
  1199. Include File:           <intuition/gadgetclass.h>
  1200.  
  1201.  
  1202. New Methods:
  1203.  
  1204.  
  1205.  
  1206. None
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212. Changed Methods:
  1213.  
  1214.  
  1215.  
  1216. OM_SET - Passes most attributes to the superclass, but propagates 
  1217. changes in position to its members appropriately. Also, GA_Width and 
  1218. GA_Height are calculated from the position and dimension of the 
  1219. membership.
  1220.  
  1221.  
  1222.  
  1223. OM_ADDMEMBER - add a gadget to the group list.  Add the gadgets you want 
  1224. in the group right after you create it and leave them there until you 
  1225. are done.  Note that all members of the groupgclass object will be 
  1226. deleted by OM_DISPOSE.
  1227.  
  1228.  
  1229.  
  1230. OM_DISPOSE - this class will dispose of the object and all its member 
  1231. gadgets.
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237. Attributes:
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243. LAYOUTA_Orientation
  1244.  
  1245. LAYOUTA_Spacing
  1246.  
  1247. LAYOUTA_LayoutObj
  1248.  
  1249. These attributes specify simple layout parameters and a "layout object 
  1250. delegate" are not currently implemented.  GA_Width and GA_Height are 
  1251. calculated from the membership.
  1252.  
  1253.  
  1254.  
  1255. GA_Left                         (IS)
  1256.  
  1257. GA_Position                     (IS)
  1258.  
  1259. These are propagated magically to the membership.
  1260.  
  1261.  
  1262.  
  1263. The gadget relative flags (GA_RelWidth, GA_RelHeight, and so on) are not 
  1264. supported.
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271. Class:                  buttongclass
  1272. Superclass:             gadgetclass
  1273. Description:            A (repeatable) command button gadget.
  1274. Include File:           <intuition/gadgetclass.h>
  1275.  
  1276.  
  1277. New Methods:
  1278.  
  1279.  
  1280.  
  1281. None.
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287. Changed Methods:
  1288.  
  1289.  
  1290.  
  1291. GM_HITTEST - Delegates this question to its GA_Image attribute.
  1292.  
  1293.  
  1294.  
  1295. GM_HANDLEINPUT - Will behave like a button, but continuously issues 
  1296. OM_NOTIFY messages for each IECLASS_TIMER event.
  1297.  
  1298.  
  1299.  
  1300. Flag OPUF_INTERIM will be set for all but the last notification.
  1301.  
  1302.  
  1303.  
  1304. The notified attribute is GA_ID, with a twist: the value sent will be 
  1305. the negative of GadgetID if the pointer is not currently over the gadget 
  1306. image.
  1307.  
  1308.  
  1309.  
  1310. GM_RENDER - All rendering is passed along to the GadgetRender Image.  
  1311. The state provided is  IDS_INACTIVESELECTED, IDS_INACTIVENORMAL, 
  1312. IDS_SELECTED, or IDS_NORMAL.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318. Attributes:
  1319.  
  1320.  
  1321.  
  1322. GA_Image                        (IS)
  1323.  
  1324. Changing the image will cause the gadget to refresh itself.
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331. Class:                  frbuttonclass
  1332. Superclass:             buttongclass
  1333. Description:            A button gadget that knows how to outline its
  1334.                         "label" within a shared "frame image".
  1335.  
  1336.  
  1337. New Methods:
  1338.  
  1339.  
  1340.  
  1341. None.
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347. Changed Methods:
  1348.  
  1349.  
  1350.  
  1351. OM_NEW - Will set up its dimensions depending on GA_Image, including 
  1352. support for frame images.  If GA_Image understands the IM_FRAMEBOX 
  1353. method, dimensions are calculated to surround the "label" stashed in 
  1354. GadgetText, which can be GA_IntuiText, GA_Text, or GA_LabelImage.
  1355.  
  1356.  
  1357.  
  1358. OM_SET - If you change the dimensions, this method will adjust the 
  1359. contents by using IM_FRAMEBOX with FRAMEIF_SPECIFY.
  1360.  
  1361.  
  1362.  
  1363. GM_HITTEST - uses IM_HITFRAME.
  1364.  
  1365.  
  1366.  
  1367. GM_RENDER - uses IM_DRAWFRAME.  First draws the frame, then draws the 
  1368. contents or label described under OM_NEW.
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374. Attributes:
  1375.  
  1376.  
  1377.  
  1378. GA_Width                        (IS) 
  1379.  
  1380. GA_Height                       (IS) 
  1381.  
  1382. If you change these, the contents will be readjusted and the gadget re-
  1383. rendered.
  1384.